from pathlib import Path
from trend.charts.bubble import KeywordRelationGenerator

def generate_example_relation():
    """生成示例核心词关系图"""
    
    # 示例数据 - 按技术领域组织
    nodes = [
        # 基础理论
        {"name": "人工智能", "value": 5000, "category": 0},
        {"name": "深度学习", "value": 4200, "category": 0},
        {"name": "机器学习", "value": 3800, "category": 0},
        {"name": "神经网络", "value": 3500, "category": 0},
        {"name": "强化学习", "value": 2200, "category": 0},
        {"name": "迁移学习", "value": 1800, "category": 0},
        {"name": "联邦学习", "value": 1500, "category": 0},
        {"name": "图神经网络", "value": 1200, "category": 0},
        
        # 计算机视觉
        {"name": "计算机视觉", "value": 4500, "category": 1},
        {"name": "目标检测", "value": 3200, "category": 1},
        {"name": "图像识别", "value": 3000, "category": 1},
        {"name": "人脸识别", "value": 2800, "category": 1},
        {"name": "视频分析", "value": 2500, "category": 1},
        {"name": "图像分割", "value": 2200, "category": 1},
        {"name": "姿态估计", "value": 1800, "category": 1},
        {"name": "三维重建", "value": 1500, "category": 1},
        
        # 自然语言处理
        {"name": "自然语言处理", "value": 4000, "category": 2},
        {"name": "机器翻译", "value": 2800, "category": 2},
        {"name": "语音识别", "value": 2600, "category": 2},
        {"name": "文本分类", "value": 2400, "category": 2},
        {"name": "情感分析", "value": 2200, "category": 2},
        {"name": "命名实体识别", "value": 2000, "category": 2},
        {"name": "问答系统", "value": 1800, "category": 2},
        {"name": "知识图谱", "value": 1600, "category": 2},
        
        # 智能机器人
        {"name": "智能机器人", "value": 3500, "category": 3},
        {"name": "机器人控制", "value": 2500, "category": 3},
        {"name": "路径规划", "value": 2200, "category": 3},
        {"name": "机械臂", "value": 2000, "category": 3},
        {"name": "仿生机器人", "value": 1800, "category": 3},
        {"name": "协作机器人", "value": 1600, "category": 3},
        {"name": "swarm机器人", "value": 1400, "category": 3},
        {"name": "人机交互", "value": 1200, "category": 3},
        
        # 应用领域
        {"name": "智能制造", "value": 3800, "category": 4},
        {"name": "自动驾驶", "value": 3500, "category": 4},
        {"name": "智慧医疗", "value": 3200, "category": 4},
        {"name": "智慧城市", "value": 3000, "category": 4},
        {"name": "智能家居", "value": 2800, "category": 4},
        {"name": "金融科技", "value": 2500, "category": 4},
        {"name": "智慧农业", "value": 2200, "category": 4},
        {"name": "智能电网", "value": 2000, "category": 4}
    ]
    
    # 生成连接关系
    links = [
        # 基础理论内部关联
        {"source": "人工智能", "target": "深度学习", "value": 800},
        {"source": "深度学习", "target": "神经网络", "value": 600},
        {"source": "机器学习", "target": "深度学习", "value": 500},
        {"source": "强化学习", "target": "深度学习", "value": 400},
        {"source": "迁移学习", "target": "深度学习", "value": 300},
        {"source": "联邦学习", "target": "机器学习", "value": 250},
        {"source": "图神经网络", "target": "神经网络", "value": 200},
        {"source": "人工智能", "target": "机器学习", "value": 750},
        {"source": "强化学习", "target": "机器学习", "value": 350},
        {"source": "迁移学习", "target": "机器学习", "value": 280},
        
        # 计算机视觉关联
        {"source": "计算机视觉", "target": "深度学习", "value": 700},
        {"source": "目标检测", "target": "计算机视觉", "value": 500},
        {"source": "图像识别", "target": "深度学习", "value": 450},
        {"source": "人脸识别", "target": "计算机视觉", "value": 400},
        {"source": "视频分析", "target": "计算机视觉", "value": 350},
        {"source": "图像分割", "target": "深度学习", "value": 300},
        {"source": "姿态估计", "target": "计算机视觉", "value": 250},
        {"source": "三维重建", "target": "计算机视觉", "value": 220},
        {"source": "图像分割", "target": "计算机视觉", "value": 280},
        {"source": "目标检测", "target": "深度学习", "value": 420},
        
        # 自然语言处理关联
        {"source": "自然语言处理", "target": "深度学习", "value": 650},
        {"source": "机器翻译", "target": "自然语言处理", "value": 450},
        {"source": "语音识别", "target": "深度学习", "value": 400},
        {"source": "文本分类", "target": "自然语言处理", "value": 350},
        {"source": "情感分析", "target": "自然语言处理", "value": 300},
        {"source": "知识图谱", "target": "自然语言处理", "value": 250},
        {"source": "问答系统", "target": "自然语言处理", "value": 280},
        {"source": "命名实体识别", "target": "自然语言处理", "value": 260},
        {"source": "机器翻译", "target": "深度学习", "value": 380},
        {"source": "知识图谱", "target": "机器学习", "value": 320},
        
        # 智能机器人关联
        {"source": "智能机器人", "target": "深度学习", "value": 500},
        {"source": "机器人控制", "target": "强化学习", "value": 400},
        {"source": "路径规划", "target": "强化学习", "value": 350},
        {"source": "机械臂", "target": "智能机器人", "value": 300},
        {"source": "人机交互", "target": "计算机视觉", "value": 250},
        {"source": "仿生机器人", "target": "智能机器人", "value": 280},
        {"source": "协作机器人", "target": "智能机器人", "value": 260},
        {"source": "swarm机器人", "target": "智能机器人", "value": 240},
        {"source": "机器人控制", "target": "智能机器人", "value": 380},
        {"source": "路径规划", "target": "机器学习", "value": 300},
        
        # 应用领域关联
        {"source": "智能制造", "target": "机器人控制", "value": 450},
        {"source": "自动驾驶", "target": "计算机视觉", "value": 400},
        {"source": "智慧医疗", "target": "深度学习", "value": 350},
        {"source": "智慧城市", "target": "计算机视觉", "value": 300},
        {"source": "智能家居", "target": "人机交互", "value": 250},
        {"source": "金融科技", "target": "机器学习", "value": 200},
        {"source": "智慧农业", "target": "计算机视觉", "value": 220},
        {"source": "智能电网", "target": "机器学习", "value": 180},
        {"source": "智能制造", "target": "智能机器人", "value": 420},
        {"source": "智慧医疗", "target": "人工智能", "value": 380},
        
        # 跨领域关联
        {"source": "自动驾驶", "target": "目标检测", "value": 380},
        {"source": "智能机器人", "target": "计算机视觉", "value": 360},
        {"source": "智慧医疗", "target": "图像识别", "value": 340},
        {"source": "智能制造", "target": "计算机视觉", "value": 320},
        {"source": "智慧城市", "target": "视频分析", "value": 300},
        {"source": "智能家居", "target": "语音识别", "value": 280},
        {"source": "金融科技", "target": "自然语言处理", "value": 260},
        {"source": "智慧农业", "target": "图像识别", "value": 240},
        {"source": "自动驾驶", "target": "强化学习", "value": 320},
        {"source": "智能制造", "target": "深度学习", "value": 360}
    ]
    
    # 创建输出目录
    output_dir = Path(__file__).parent.parent / 'output' / 'relations'
    output_dir.mkdir(parents=True, exist_ok=True)
    
    # 创建生成器
    generator = KeywordRelationGenerator()
    
    try:
        # 生成关系图
        save_path = output_dir / 'keyword_relation_2023.html'
        result_path = generator.generate(
            nodes=nodes,
            links=links,
            save_path=str(save_path),
            title='AI领域专利核心词关系图'
        )
        print(f"生成成功: {result_path}")
        
    except Exception as e:
        print(f"生成失败: {str(e)}")

if __name__ == "__main__":
    generate_example_relation()
